Input/Output Functions (ইনপুট/আউটপুট ফাংশনস)

Computer Programming - সি স্ট্যান্ডার্ড লাইব্রেরি রেফারেন্স (C Standard Library Reference)
859
859

ইনপুট/আউটপুট ফাংশনস (Input/Output Functions)

সি প্রোগ্রামিং ভাষায় ইনপুট এবং আউটপুট ফাংশনগুলো একটি প্রোগ্রামের জন্য অত্যন্ত গুরুত্বপূর্ণ। stdio.h (স্ট্যান্ডার্ড ইনপুট/আউটপুট) হেডার ফাইলটি সি প্রোগ্রামের মধ্যে ইনপুট এবং আউটপুট ফাংশনগুলো সরবরাহ করে। এই ফাংশনগুলো ব্যবহার করে আপনি কনসোলে আউটপুট প্রদর্শন করতে পারেন এবং কনসোল থেকে ইনপুট নিতে পারেন। সি প্রোগ্রামের প্রাথমিক কাজগুলোর মধ্যে ইনপুট ও আউটপুট অন্যতম, এবং এই ফাংশনগুলো এগুলো খুব সহজে করতে সাহায্য করে।

এখানে সি স্ট্যান্ডার্ড লাইব্রেরির বিভিন্ন ইনপুট ও আউটপুট ফাংশনের বিস্তারিত ব্যাখ্যা দেওয়া হলো:


১. printf() – আউটপুট প্রদর্শন

printf() ফাংশনটি কনসোলে আউটপুট প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি ফরম্যাটেড আউটপুট প্রদানের জন্য একটি শক্তিশালী ফাংশন। প্রোগ্রামাররা এই ফাংশন ব্যবহার করে কনসোলে বিভিন্ন ধরনের আউটপুট, যেমন স্ট্রিং, নাম্বার, ফ্লোটিং পয়েন্ট মান এবং অন্যান্য ডাটা টাইপ আউটপুট করতে পারেন।

সিঙ্কট্যাক্স:

printf("format_string", argument1, argument2, ...);

ফরম্যাট স্পেসিফায়ার ব্যবহার করে আপনি আউটপুট কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, আপনি একটি ইন্টিজার, ফ্লোট বা স্ট্রিং আউটপুট দিতে পারেন।

উদাহরণ:

#include <stdio.h>

int main() {
    int number = 10;
    float pi = 3.14159;
    
    // আউটপুট প্রদর্শন
    printf("The number is: %d\n", number);  // ইন্টিজার আউটপুট
    printf("The value of pi is: %.2f\n", pi);  // ফ্লোট আউটপুট (দুই দশমিক পর্যন্ত)

    return 0;
}

ফরম্যাট স্পেসিফায়ার:

  • %d বা %i - ইন্টিজার
  • %f - ফ্লোটিং পয়েন্ট নম্বর
  • %c - একক চরিত্র
  • %s - স্ট্রিং
  • %.2f - ফ্লোটের জন্য দুই দশমিক পর্যন্ত আউটপুট

২. scanf() – ইনপুট নেওয়া

scanf() ফাংশনটি কনসোল থেকে ইনপুট নেয়ার জন্য ব্যবহৃত হয়। এটি ইউজারের কাছ থেকে ডাটা গ্রহণ করে এবং তা নির্দিষ্ট ভেরিয়েবলে স্টোর করে। ইনপুট নেওয়ার সময়, scanf() নির্দিষ্ট ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুট ডেটা গ্রহণ করে।

সিঙ্কট্যাক্স:

scanf("format_string", &variable1, &variable2, ...);

উদাহরণ:

#include <stdio.h>

int main() {
    int age;
    float height;

    // ইউজারের কাছ থেকে ইনপুট নেওয়া
    printf("Enter your age: ");
    scanf("%d", &age);  // %d ইন্টিজার ইনপুটের জন্য
    
    printf("Enter your height: ");
    scanf("%f", &height);  // %f ফ্লোট ইনপুটের জন্য
    
    // আউটপুট প্রদর্শন
    printf("Your age is: %d\n", age);
    printf("Your height is: %.2f\n", height);

    return 0;
}

ফরম্যাট স্পেসিফায়ার:

  • %d – ইন্টিজার ইনপুট
  • %f – ফ্লোট ইনপুট
  • %c – একক ক্যারেক্টার ইনপুট
  • %s – স্ট্রিং ইনপুট

৩. getchar() – একক অক্ষর ইনপুট

getchar() ফাংশনটি কনসোল থেকে একক অক্ষর ইনপুট নেয়। এটি একটি অক্ষর গ্রহণ করে এবং ফিরিয়ে দেয় যা ইউজার কিপ্যাড থেকে টাইপ করেছে। এটি সাধারণত একক অক্ষরের ইনপুট গ্রহণ করতে ব্যবহৃত হয়, এবং এটি স্ট্রিং ইনপুট থেকে আলাদা।

সিঙ্কট্যাক্স:

char getchar(void);

উদাহরণ:

#include <stdio.h>

int main() {
    char c;
    
    printf("Enter a character: ");
    c = getchar();  // একক অক্ষর ইনপুট
    
    printf("You entered: %c\n", c);

    return 0;
}

getchar() ফাংশনটি শুধুমাত্র একটি অক্ষর গ্রহণ করে। এটি ইন্টারঅ্যাকটিভ প্রোগ্রামিংয়ের জন্য উপকারী, যেখানে ইউজার একটি নির্দিষ্ট চিহ্ন বা অক্ষর প্রদান করে।


৪. putchar() – একক অক্ষর আউটপুট

putchar() ফাংশনটি কনসোলে একক অক্ষর আউটপুট প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি একটি অক্ষর আর্গুমেন্ট হিসেবে গ্রহণ করে এবং সেই অক্ষরটি কনসোলে প্রদর্শন করে।

সিঙ্কট্যাক্স:

putchar(character);

উদাহরণ:

#include <stdio.h>

int main() {
    char c = 'A';
    
    // একক অক্ষর আউটপুট
    putchar(c);  // 'A' প্রদর্শন করবে
    printf("\n");

    return 0;
}

putchar() ফাংশনটি খুব সহজ এবং সহজেই একক অক্ষরের আউটপুট প্রদর্শন করতে ব্যবহৃত হয়।


৫. fgets() – স্ট্রিং ইনপুট

fgets() ফাংশনটি একটি নির্দিষ্ট সংখ্যক ক্যারেক্টার পড়ে এবং একটি স্ট্রিং হিসেবে স্টোর করে। এটি ফাইল থেকে অথবা কনসোল থেকে ইনপুট নিতে ব্যবহৃত হয় এবং এটি gets() এর একটি নিরাপদ বিকল্প। fgets() ব্যবহার করে আপনি ইনপুটের আকার সীমাবদ্ধ করতে পারেন।

সিঙ্কট্যাক্স:

fgets(string, size, stdin);

উদাহরণ:

#include <stdio.h>

int main() {
    char str[100];

    // স্ট্রিং ইনপুট
    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin);

    printf("You entered: %s", str);

    return 0;
}

fgets() ফাংশনটি একটি নির্দিষ্ট আকারের স্ট্রিং গ্রহণ করে এবং এটি বাফার ওভারফ্লো প্রতিরোধ করতে সহায়ক।


৬. gets() – স্ট্রিং ইনপুট (Deprecated)

gets() ফাংশনটি কনসোল থেকে একটি পূর্ণ লাইন স্ট্রিং ইনপুট নেয়। তবে এটি ব্যবহার করা নিরাপদ নয়, কারণ এটি বাফার ওভারফ্লো সৃষ্টি করতে পারে। নিরাপত্তার কারণে বর্তমানে gets() ফাংশনটি ব্যবহার করা উচিত নয়, এবং এর পরিবর্তে fgets() ব্যবহার করার পরামর্শ দেওয়া হয়।

সিঙ্কট্যাক্স:

gets(string);

gets() ব্যবহার করলে যদি ইউজার ইনপুটের মধ্যে বেশিরকম ক্যারেক্টার দেন, তবে এটি বাফারে অতিরিক্ত ডেটা রাখতে পারে, যা প্রোগ্রামের ক্র্যাশ বা অন্যান্য সমস্যা সৃষ্টি করতে পারে।


সারসংক্ষেপ

সি প্রোগ্রামিংয়ে ইনপুট এবং আউটপুট ফাংশনগুলো প্রোগ্রামারদের ইউজারের সাথে যোগাযোগের একটি গুরুত্বপূর্ণ উপায়। printf(), scanf(), getchar(), putchar(), এবং fgets() এই ফাংশনগুলো ইনপুট এবং আউটপুট অপারেশন সহজ এবং কার্যকরী করে তোলে। তবে gets() ফাংশনটি নিরাপত্তা ঝুঁকির কারণে এখন ব্যবহার করা উচিত নয় এবং তার পরিবর্তে fgets() ব্যবহার করা উচিত।

common.content_added_by

stdio.h হেডার ফাইল এবং এর ফাংশনসমূহ

770
770

stdio.h হেডার ফাইল এবং এর ফাংশনসমূহ

stdio.h হেডার ফাইলটি সি স্ট্যান্ডার্ড লাইব্রেরির অংশ, যা স্ট্যান্ডার্ড ইনপুট এবং আউটপুট অপারেশনের জন্য বিভিন্ন ফাংশন সরবরাহ করে। এটি Standard Input/Output এর সংক্ষিপ্ত রূপ। stdio.h ফাইলের ফাংশনগুলোর মাধ্যমে প্রোগ্রামাররা ইনপুট ও আউটপুট কার্যক্রম সহজে পরিচালনা করতে পারেন, যেমন কনসোল বা ফাইল থেকে ডেটা ইনপুট নেওয়া এবং আউটপুট দেখানো।

এখানে stdio.h হেডার ফাইলের কিছু গুরুত্বপূর্ণ ফাংশন এবং তাদের ব্যবহারের ধরন নিয়ে আলোচনা করা হলো:


printf() – ফরম্যাটেড আউটপুট প্রদর্শন

printf() ফাংশনটি কনসোলে আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়। এটি ফরম্যাটেড আউটপুট প্রদর্শনে খুবই কার্যকর এবং বিভিন্ন ধরনের ডেটা টাইপ আউটপুট করতে সক্ষম।

সিঙ্কট্যাক্স:

printf("format_string", argument1, argument2, ...);

উদাহরণ:

#include <stdio.h>

int main() {
    int age = 25;
    printf("Your age is: %d\n", age);
    return 0;
}

scanf() – ফরম্যাটেড ইনপুট গ্রহণ

scanf() ফাংশনটি ইউজারের কাছ থেকে ইনপুট নিতে ব্যবহৃত হয় এবং এটি ভেরিয়েবলে ইনপুট ডেটা স্টোর করে। এই ফাংশনটি ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুট গ্রহণ করে।

সিঙ্কট্যাক্স:

scanf("format_string", &variable1, &variable2, ...);

উদাহরণ:

#include <stdio.h>

int main() {
    int age;
    printf("Enter your age: ");
    scanf("%d", &age);
    printf("Your age is: %d\n", age);
    return 0;
}

getchar() – একক ক্যারেক্টার ইনপুট

getchar() ফাংশনটি কনসোল থেকে একটি একক ক্যারেক্টার ইনপুট গ্রহণ করে এবং তা রিটার্ন করে। এটি একক ক্যারেক্টার ইনপুট নেওয়ার জন্য খুবই উপযোগী।

সিঙ্কট্যাক্স:

char getchar(void);

উদাহরণ:

#include <stdio.h>

int main() {
    char ch;
    printf("Enter a character: ");
    ch = getchar();
    printf("You entered: %c\n", ch);
    return 0;
}

putchar() – একক ক্যারেক্টার আউটপুট

putchar() ফাংশনটি কনসোলে একটি একক ক্যারেক্টার আউটপুট প্রদর্শন করতে ব্যবহৃত হয়। এটি একটি ক্যারেক্টার আর্গুমেন্ট গ্রহণ করে এবং সেটি আউটপুট করে।

সিঙ্কট্যাক্স:

putchar(character);

উদাহরণ:

#include <stdio.h>

int main() {
    char ch = 'A';
    putchar(ch);
    return 0;
}

gets() – স্ট্রিং ইনপুট (Deprecated)

gets() ফাংশনটি কনসোল থেকে সম্পূর্ণ একটি লাইন ইনপুট নেয়। তবে এটি নিরাপদ নয় এবং বাফার ওভারফ্লো ঘটাতে পারে, এজন্য fgets() ব্যবহার করার পরামর্শ দেওয়া হয়।

সিঙ্কট্যাক্স:

gets(string);

উদাহরণ:

#include <stdio.h>

int main() {
    char name[100];
    printf("Enter your name: ");
    gets(name);  // পরামর্শ দেওয়া হয় না
    printf("Hello, %s\n", name);
    return 0;
}

fgets() – নিরাপদ স্ট্রিং ইনপুট

fgets() ফাংশনটি নির্দিষ্ট আকারের একটি স্ট্রিং ইনপুট গ্রহণ করে। এটি gets() এর একটি নিরাপদ বিকল্প।

সিঙ্কট্যাক্স:

fgets(string, size, stdin);

উদাহরণ:

#include <stdio.h>

int main() {
    char name[100];
    printf("Enter your name: ");
    fgets(name, sizeof(name), stdin);
    printf("Hello, %s", name);
    return 0;
}

puts() – স্ট্রিং আউটপুট

puts() ফাংশনটি একটি স্ট্রিং কনসোলে প্রদর্শন করে এবং শেষে একটি newline ক্যারেক্টার যোগ করে। এটি printf() এর বিকল্প হিসেবে দ্রুত স্ট্রিং প্রদর্শনে ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

puts(string);

উদাহরণ:

#include <stdio.h>

int main() {
    char name[] = "John Doe";
    puts(name);  // আউটপুটের শেষে newline
    return 0;
}

fprintf() এবং fscanf() – ফাইলের মাধ্যমে ইনপুট/আউটপুট

fprintf() এবং fscanf() ফাংশন দুটি ফাইল থেকে ইনপুট এবং আউটপুট পরিচালনার জন্য ব্যবহৃত হয়।

fprintf():

ফরম্যাটেড আউটপুট ফাইলে লেখার জন্য ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

fprintf(file_pointer, "format_string", argument1, argument2, ...);

fscanf():

ফরম্যাটেড ইনপুট ফাইল থেকে পড়ার জন্য ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

fscanf(file_pointer, "format_string", &variable1, &variable2, ...);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *fptr;
    fptr = fopen("test.txt", "w");  // ফাইল খোলা

    if (fptr != NULL) {
        fprintf(fptr, "Hello, file!\n");  // ফাইলে লেখা
        fclose(fptr);  // ফাইল বন্ধ করা
    }

    return 0;
}

fopen() এবং fclose() – ফাইল খোলা এবং বন্ধ করা

fopen()

এই ফাংশনটি একটি ফাইল খুলে এবং ফাইল পয়েন্টার রিটার্ন করে।

সিঙ্কট্যাক্স:

FILE *fopen(const char *filename, const char *mode);

fclose()

এই ফাংশনটি ফাইল বন্ধ করতে ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

int fclose(FILE *file_pointer);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *fptr = fopen("test.txt", "r");

    if (fptr != NULL) {
        fclose(fptr);
    }

    return 0;
}

সারসংক্ষেপ

stdio.h হেডার ফাইলটি সি প্রোগ্রামিংয়ে ইনপুট এবং আউটপুট অপারেশনের জন্য একটি অপরিহার্য হেডার ফাইল। এই হেডার ফাইলটি ইনপুট এবং আউটপুট অপারেশন সহজে সম্পন্ন করতে বিভিন্ন ধরনের ফাংশন সরবরাহ করে, যেমন printf(), scanf(), getchar(), putchar(), fgets(), এবং **fprintf()**। এগুলোর মাধ্যমে প্রোগ্রামার কনসোল এবং ফাইল থেকে ইনপুট নিতে এবং আউটপুট দিতে পারেন।

common.content_added_by

printf() এবং scanf() ফাংশন

572
572

printf() এবং scanf() ফাংশন

সি প্রোগ্রামিং ভাষায় printf() এবং scanf() ফাংশন দুটি সবচেয়ে বেশি ব্যবহৃত হয়। printf() ফাংশনটি কনসোলে আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়, আর scanf() ফাংশনটি কনসোল থেকে ইনপুট গ্রহণের জন্য ব্যবহৃত হয়। এই দুটি ফাংশন stdio.h হেডার ফাইলের অন্তর্ভুক্ত, এবং এটি সাধারণত প্রোগ্রামারের ইউজারের সাথে ইন্টারঅ্যাকশনের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।


printf() ফাংশন

printf() ফাংশনটি কনসোলে আউটপুট প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি ফরম্যাট স্পেসিফায়ার ব্যবহার করে আউটপুট ফরম্যাট করা যায়, যা বিভিন্ন ধরনের ডেটা টাইপ আউটপুট করতে সহায়ক। উদাহরণস্বরূপ, ইন্টিজার, ফ্লোট, স্ট্রিং ইত্যাদি।

সিঙ্কট্যাক্স:

printf("format_string", argument1, argument2, ...);

সাধারণ ফরম্যাট স্পেসিফায়ার:

  • %d বা %i – ইন্টিজার আউটপুটের জন্য।
  • %f – ফ্লোট আউটপুটের জন্য।
  • %c – একক ক্যারেক্টার আউটপুটের জন্য।
  • %s – স্ট্রিং আউটপুটের জন্য।
  • %x – হেক্সাডেসিমাল আউটপুটের জন্য।
  • %o – অক্টাল আউটপুটের জন্য।
  • %.nf – দশমিকের পরে নির্দিষ্ট সংখ্যক ডিজিট প্রদর্শনের জন্য (যেমন, %.2f দুই দশমিক পর্যন্ত ফ্লোট প্রদর্শন করবে)।

উদাহরণ:

#include <stdio.h>

int main() {
    int age = 25;
    float pi = 3.14159;
    char initial = 'A';
    char name[] = "Alice";

    printf("Age: %d\n", age);               // ইন্টিজার আউটপুট
    printf("Value of pi: %.2f\n", pi);       // ফ্লোট আউটপুট (দুই দশমিক পর্যন্ত)
    printf("Initial: %c\n", initial);        // ক্যারেক্টার আউটপুট
    printf("Name: %s\n", name);              // স্ট্রিং আউটপুট

    return 0;
}

এই উদাহরণে বিভিন্ন ফরম্যাট স্পেসিফায়ার ব্যবহার করে আউটপুট ফরম্যাট করা হয়েছে। %d, %.2f, %c, এবং %s এর মাধ্যমে বিভিন্ন ধরনের ডেটা টাইপ আউটপুট করা হয়েছে।


scanf() ফাংশন

scanf() ফাংশনটি কনসোল থেকে ইনপুট নেয়ার জন্য ব্যবহৃত হয়। এটি ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুটের ধরন নির্ধারণ করে এবং ভেরিয়েবলে ডেটা স্টোর করে। scanf() ফাংশনের মাধ্যমে বিভিন্ন ধরনের ইনপুট নেওয়া যায়, যেমন ইন্টিজার, ফ্লোট, স্ট্রিং ইত্যাদি।

সিঙ্কট্যাক্স:

scanf("format_string", &variable1, &variable2, ...);

বিঃদ্রঃ scanf() ফাংশনে ইনপুট নেওয়ার সময় ভেরিয়েবলের ঠিকানায় ডেটা স্টোর করতে & অপারেটর ব্যবহার করা হয়।

সাধারণ ফরম্যাট স্পেসিফায়ার:

  • %d – ইন্টিজার ইনপুটের জন্য।
  • %f – ফ্লোট ইনপুটের জন্য।
  • %c – একক ক্যারেক্টার ইনপুটের জন্য।
  • %s – স্ট্রিং ইনপুটের জন্য (একটি শব্দ ইনপুট নেয়)।
  • %x – হেক্সাডেসিমাল ইনপুটের জন্য।
  • %o – অক্টাল ইনপুটের জন্য।

উদাহরণ:

#include <stdio.h>

int main() {
    int age;
    float height;
    char initial;
    char name[50];

    printf("Enter your age: ");
    scanf("%d", &age);                       // ইন্টিজার ইনপুট

    printf("Enter your height: ");
    scanf("%f", &height);                    // ফ্লোট ইনপুট

    printf("Enter your initial: ");
    scanf(" %c", &initial);                  // ক্যারেক্টার ইনপুট

    printf("Enter your name: ");
    scanf("%s", name);                       // স্ট্রিং ইনপুট (একটি শব্দ)

    printf("\nYour age: %d\n", age);
    printf("Your height: %.2f\n", height);
    printf("Your initial: %c\n", initial);
    printf("Your name: %s\n", name);

    return 0;
}

এখানে scanf() ফাংশনের মাধ্যমে বিভিন্ন ধরনের ইনপুট নেওয়া হয়েছে। %d, %f, %c, এবং %s ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুটের ধরন নির্ধারণ করা হয়েছে।

বিঃদ্রঃ: ক্যারেক্টার ইনপুট নেওয়ার সময় scanf(" %c", &initial); ব্যবহারের আগে স্পেস দিয়ে লেখা হয়েছে। এটি পূর্বের newline বা স্পেস এড়াতে সাহায্য করে।


printf() এবং scanf() এর মাধ্যমে ফরম্যাটেড ইনপুট ও আউটপুট

printf() এবং scanf() ফাংশনের মাধ্যমে বিভিন্ন ধরনের ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুট ও আউটপুট পরিচালনা করা যায়। ফরম্যাট স্পেসিফায়ার গুলি ভিন্ন ভিন্ন ডেটা টাইপের জন্য আলাদা থাকে। এগুলো ব্যবহার করে আপনি কনসোলে কাস্টম ইনপুট এবং আউটপুট করতে পারেন। যেমন, আপনি ইন্টিজার, ফ্লোট, ক্যারেক্টার এবং স্ট্রিং ইত্যাদি বিভিন্ন ডেটা টাইপ সহজেই ইনপুট ও আউটপুট করতে পারবেন।


সারসংক্ষেপ

printf() এবং scanf() ফাংশন দুটি সি প্রোগ্রামিংয়ের ইনপুট ও আউটপুট অপারেশন পরিচালনার জন্য গুরুত্বপূর্ণ। printf() ফাংশনটি আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়, যেখানে বিভিন্ন ধরনের ডেটা আউটপুট করা যায়। scanf() ফাংশনটি ইনপুট গ্রহণের জন্য ব্যবহৃত হয়, যেখানে বিভিন্ন ধরনের ইনপুট কনসোল থেকে নেওয়া সম্ভব। এই ফাংশন দুটি stdio.h হেডার ফাইলের অন্তর্গত এবং সি প্রোগ্রামিংয়ে ইউজারের সাথে ইন্টারঅ্যাকশনের জন্য অপরিহার্য।

common.content_added_by

gets(), puts() এবং getchar(), putchar() এর ব্যবহার

389
389

gets(), puts(), getchar() এবং putchar() এর ব্যবহার

সি প্রোগ্রামিং ভাষায় gets(), puts(), getchar() এবং putchar() ফাংশনগুলো ইনপুট এবং আউটপুটের জন্য ব্যবহার করা হয়। প্রতিটি ফাংশনের একটি নির্দিষ্ট কাজ রয়েছে এবং প্রোগ্রামিংয়ে ইউজারের সাথে ইন্টারঅ্যাকশন আরও সহজ করে তোলে। নিচে এই ফাংশনগুলো সম্পর্কে বিস্তারিত আলোচনা করা হলো।


gets() – স্ট্রিং ইনপুট (Deprecated)

gets() ফাংশনটি কনসোল থেকে সম্পূর্ণ একটি লাইন স্ট্রিং ইনপুট নিতে ব্যবহৃত হয়। এটি ব্যবহার করে ইউজার একটি সম্পূর্ণ লাইন টাইপ করতে পারে, যা পরবর্তী newline ক্যারেক্টার পর্যন্ত ইনপুট হিসাবে গৃহীত হয়। তবে, gets() ফাংশনটি নিরাপত্তাজনিত ঝুঁকির কারণে বর্তমানে পরিত্যক্ত (deprecated), কারণ এটি বাফার ওভারফ্লো ঘটাতে পারে। এর পরিবর্তে fgets() ফাংশন ব্যবহার করার পরামর্শ দেওয়া হয়।

সিঙ্কট্যাক্স:

gets(string);

উদাহরণ:

#include <stdio.h>

int main() {
    char name[100];

    printf("Enter your name: ");
    gets(name);  // এটি নিরাপদ নয় এবং পরামর্শ দেওয়া হয় না

    printf("Hello, %s\n", name);
    return 0;
}

বিঃদ্রঃ gets() ফাংশনটি নিরাপদ নয়, তাই এর পরিবর্তে fgets() ব্যবহার করা উচিৎ।


puts() – স্ট্রিং আউটপুট

puts() ফাংশনটি একটি স্ট্রিং কনসোলে প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি printf() এর বিকল্প হিসেবে স্ট্রিং আউটপুট দিতে পারে। puts() ফাংশনটি স্ট্রিং প্রদর্শনের পরে একটি newline ক্যারেক্টার (নতুন লাইন) যোগ করে, যার ফলে আউটপুটের পরে নতুন লাইনে চলে যায়।

সিঙ্কট্যাক্স:

puts(string);

উদাহরণ:

#include <stdio.h>

int main() {
    char name[] = "Alice";

    puts("Hello,");
    puts(name);  // আউটপুটের শেষে newline ক্যারেক্টার যুক্ত করবে

    return 0;
}

এখানে puts() ফাংশনটি স্ট্রিং আউটপুট প্রদর্শন করেছে এবং প্রতিটি আউটপুটের শেষে একটি নতুন লাইন যোগ করেছে।


getchar() – একক ক্যারেক্টার ইনপুট

getchar() ফাংশনটি কনসোল থেকে একটি একক ক্যারেক্টার ইনপুট নিতে ব্যবহৃত হয়। এটি একটি অক্ষর ইনপুট গ্রহণ করে এবং সেই অক্ষরটি প্রোগ্রামে রিটার্ন করে। getchar() সাধারণত একক অক্ষর ইনপুটের জন্য উপযুক্ত।

সিঙ্কট্যাক্স:

char getchar(void);

উদাহরণ:

#include <stdio.h>

int main() {
    char ch;

    printf("Enter a character: ");
    ch = getchar();  // একক অক্ষর ইনপুট

    printf("You entered: %c\n", ch);
    return 0;
}

এখানে getchar() ফাংশনটি একটি অক্ষর ইনপুট গ্রহণ করেছে এবং printf() এর মাধ্যমে সেই অক্ষরটি প্রদর্শন করেছে।


putchar() – একক ক্যারেক্টার আউটপুট

putchar() ফাংশনটি কনসোলে একটি একক ক্যারেক্টার আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়। এটি একটি ক্যারেক্টার আর্গুমেন্ট হিসেবে গ্রহণ করে এবং সেই ক্যারেক্টারটি কনসোলে প্রদর্শন করে।

সিঙ্কট্যাক্স:

putchar(character);

উদাহরণ:

#include <stdio.h>

int main() {
    char ch = 'A';

    printf("The character is: ");
    putchar(ch);  // একক অক্ষর আউটপুট করবে
    printf("\n");

    return 0;
}

এখানে putchar() ফাংশনটি ch ভেরিয়েবলে থাকা A অক্ষরটি কনসোলে আউটপুট করেছে।


gets() বনাম fgets()

যেহেতু gets() ফাংশনটি বাফার ওভারফ্লো ঘটাতে পারে, তাই fgets() ফাংশনটি একটি নিরাপদ বিকল্প হিসেবে ব্যবহার করা হয়। fgets() ইনপুটের আকার নির্দিষ্ট করতে দেয়, যার ফলে অতিরিক্ত ডেটা স্টোর হওয়ার ঝুঁকি থাকে না।

fgets() উদাহরণ:

#include <stdio.h>

int main() {
    char name[100];

    printf("Enter your name: ");
    fgets(name, sizeof(name), stdin);  // নিরাপদ স্ট্রিং ইনপুট

    printf("Hello, %s", name);
    return 0;
}

সারসংক্ষেপ

ফাংশনকাজব্যবহারের ধরন
gets()স্ট্রিং ইনপুট (পরিত্যক্ত)gets(string);
puts()স্ট্রিং আউটপুটputs(string);
getchar()একক ক্যারেক্টার ইনপুটchar ch = getchar();
putchar()একক ক্যারেক্টার আউটপুটputchar(ch);
fgets()নিরাপদ স্ট্রিং ইনপুটfgets(string, size, stdin);

gets() এবং puts() স্ট্রিং ইনপুট এবং আউটপুটের জন্য ব্যবহৃত হয়, তবে gets() ফাংশনটি নিরাপদ নয়, তাই fgets() ফাংশন ব্যবহার করা বাঞ্ছনীয়। অন্যদিকে, getchar() এবং putchar() একক ক্যারেক্টার ইনপুট এবং আউটপুটের জন্য ব্যবহৃত হয়।

common.content_added_by

ফাইল ইনপুট/আউটপুট: fopen(), fclose(), fread(), fwrite(), fprintf()

209
209

ফাইল ইনপুট/আউটপুট: fopen(), fclose(), fread(), fwrite(), fprintf()

সি প্রোগ্রামিংয়ে ফাইল ইনপুট এবং আউটপুট (I/O) অপারেশন পরিচালনা করতে stdio.h হেডার ফাইলটি ব্যবহৃত হয়। এই হেডার ফাইলের মাধ্যমে প্রোগ্রামাররা ফাইল থেকে ডেটা পড়তে, ফাইলে ডেটা লিখতে এবং ফাইল খোলার বা বন্ধ করার কাজ করতে পারেন। সি ভাষায় ফাইল পরিচালনার জন্য কিছু গুরুত্বপূর্ণ ফাংশন রয়েছে, যেমন fopen(), fclose(), fread(), fwrite(), এবং **fprintf()**।

এখানে এই ফাংশনগুলোর বিস্তারিত আলোচনা করা হলো:


১. fopen() – ফাইল খোলা

fopen() ফাংশনটি একটি ফাইল খোলার জন্য ব্যবহৃত হয়। এটি একটি ফাইল পয়েন্টার রিটার্ন করে, যা ফাইলের সাথে সম্পর্কিত অপারেশন করতে ব্যবহৃত হয়। ফাইলটি নির্দিষ্ট মোডে খোলা হয়, যেমন r (পড়ার জন্য), w (লেখার জন্য), a (অ্যাপেন্ড), ইত্যাদি।

সিঙ্কট্যাক্স:

FILE *fopen(const char *filename, const char *mode);

ফাইল মোড:

  • "r" – শুধুমাত্র পড়ার জন্য।
  • "w" – লেখার জন্য (ফাইলটি যদি থাকে তবে মুছে দেয়)।
  • "a" – অ্যাপেন্ড (ফাইলের শেষে লেখার জন্য)।
  • "rb", "wb", "ab" – বাইনারি মোডে কাজ করার জন্য।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");  // ফাইল লেখার জন্য খোলা
    if (file == NULL) {
        printf("File not opened.\n");
        return 1;
    }

    fprintf(file, "Hello, World!\n");  // ফাইলে লেখা
    fclose(file);  // ফাইল বন্ধ

    return 0;
}

২. fclose() – ফাইল বন্ধ করা

fclose() ফাংশনটি একটি খোলা ফাইল বন্ধ করার জন্য ব্যবহৃত হয়। এটি ফাইলের সাথে সম্পর্কিত সমস্ত রিসোর্স মুক্ত করে এবং ফাইল পয়েন্টারটি অবৈধ করে দেয়।

সিঙ্কট্যাক্স:

int fclose(FILE *file_pointer);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file != NULL) {
        fprintf(file, "Hello, World!\n");
        fclose(file);  // ফাইল বন্ধ
    }

    return 0;
}

৩. fread() – ফাইল থেকে ডেটা পড়া

fread() ফাংশনটি একটি ফাইল থেকে নির্দিষ্ট পরিমাণ ডেটা পড়তে ব্যবহৃত হয়। এটি বাইনারি ফাইল থেকে ডেটা পড়তে সবচেয়ে বেশি ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

size_t fread(void *ptr, size_t size, size_t count, FILE *file_pointer);
  • ptr – যেখানে ডেটা স্টোর হবে (বাফার)।
  • size – প্রতি এলিমেন্টের আকার।
  • count – মোট এলিমেন্টের সংখ্যা।
  • file_pointer – ফাইল পয়েন্টার।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.bin", "rb");  // বাইনারি ফাইল খোলা
    if (file == NULL) {
        printf("File not found.\n");
        return 1;
    }

    int buffer[10];
    fread(buffer, sizeof(int), 10, file);  // ফাইল থেকে 10টি ইন্ট পড়া
    fclose(file);

    for (int i = 0; i < 10; i++) {
        printf("%d ", buffer[i]);
    }

    return 0;
}

৪. fwrite() – ফাইলে ডেটা লেখা

fwrite() ফাংশনটি ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়। এটি বাইনারি ফাইলের জন্য সবচেয়ে বেশি ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *file_pointer);
  • ptr – যেখান থেকে ডেটা লেখা হবে।
  • size – প্রতি এলিমেন্টের আকার।
  • count – মোট এলিমেন্টের সংখ্যা।
  • file_pointer – ফাইল পয়েন্টার।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.bin", "wb");  // বাইনারি ফাইল খোলা
    if (file == NULL) {
        printf("File not opened.\n");
        return 1;
    }

    int data[] = {1, 2, 3, 4, 5};
    fwrite(data, sizeof(int), 5, file);  // ফাইলে 5টি ইন্ট লেখা
    fclose(file);

    return 0;
}

৫. fprintf() – ফাইলের মাধ্যমে ফরম্যাটেড আউটপুট

fprintf() ফাংশনটি ফাইলের মধ্যে ফরম্যাটেড আউটপুট লেখার জন্য ব্যবহৃত হয়। এটি printf() এর মতো, তবে আউটপুট কনসোলের পরিবর্তে ফাইলে লেখা হয়।

সিঙ্কট্যাক্স:

int fprintf(FILE *file_pointer, const char *format, ...);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");  // ফাইল লেখার জন্য খোলা
    if (file == NULL) {
        printf("File not opened.\n");
        return 1;
    }

    fprintf(file, "Name: %s\nAge: %d\n", "John Doe", 30);  // ফাইলে ফরম্যাটেড আউটপুট লেখা
    fclose(file);

    return 0;
}

সারসংক্ষেপ

ফাংশনকাজব্যবহারের ধরন
fopen()ফাইল খোলাFILE *file = fopen("filename", "mode");
fclose()ফাইল বন্ধ করাfclose(file);
fread()ফাইল থেকে ডেটা পড়াfread(buffer, size, count, file);
fwrite()ফাইলে ডেটা লেখাfwrite(buffer, size, count, file);
fprintf()ফাইলের মাধ্যমে ফরম্যাটেড আউটপুট লেখাfprintf(file, "format", ...);

এই ফাংশনগুলোর মাধ্যমে সি প্রোগ্রামে ফাইল থেকে ইনপুট/আউটপুট সহজে পরিচালনা করা যায়। ফাইল ম্যানিপুলেশনের জন্য সঠিক ফাইল মোড এবং সঠিক ফাংশন ব্যবহার করা গুরুত্বপূর্ণ।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion